1. Field
One embodiment of the present invention relates to a method of driving and controlling a USB controller, which is suitably used in a personal computer including a Universal Serial Bus (USB) connector, and communicates with a USB device connected through the USB connector.
2. Description of the Related Art
A notebook computer operable on batteries has been widely used in recent years. Such a computer is usually provided with two or more USB connectors, and is formed to connect and use various devices (USB devices) if necessary.
In other words, such a computer is made compact and light in weight by incorporating basic resources only. Various proposals have been made to effectively use the various devices (e.g., Jpn. Pat. Appln. KOKAI Publication No. 2001-175463).
Communication with a USB device connected through a USB connector (including communication with an internal USB device if it is incorporated) is executed by a USB controller. The USB controller is driven and controlled by a basic input/output system (BIOS), before an operating system (OS) is started up.
In contrast to the above, when a USB controller communicates with a USB device, which has a specific function, and requires specific communication, the USB controller is driven and controlled by a USB driver prepared separately from the BIOS. Thus, when an ordinary USB device and a specific USB device coexist under the control of the same USB controller, the same USB controller is separately controlled by the BIOS and USB driver.
To make a USB controller communicate with a USB device, it is necessary to form a data structure for communication control containing a frame list, a queue head, a transfer descriptor and a data transfer buffer, in a system memory. In the prior art, when one USB controller is separately controlled by a BIOS and USB driver as described above, a USB driver uses a frame list prepared by a BIOS as a frame list forming an entry of the data structure, and prepares its own queue head, transfer descriptor and data transfer buffer.
Thus, a frame list prepared by a BIOS may be overwritten at the timing unexpected by the BIOS. To prevent malfunctions of both BIOS and USB driver, updating of the frame list by a BIOS is stopped while the USB driver is operating.
However, if so, a BIOS cannot communicate with a USB device by using a USB controller until the USB driver terminates its operation, regardless of whether or not a USB driver is actually communicating with a USB device. Therefore, a USB device requiring control of BIOS even while the USB driver is operating must be connected to another USB controller different from a USB controller controlled by the USB driver.